home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 205_01 / bgtalk.c < prev    next >
Text File  |  1980-01-01  |  10KB  |  298 lines

  1.  
  2. /*
  3. HEADER:         CUG205.00;
  4. TITLE:          BGTALK.C - Backgammon II (for MS-DOS);
  5. VERSION:        2.00;
  6. DATE:           10/10/86;
  7. DESCRIPTION:    "Conversation module for Backgammon II.";
  8. KEYWORDS:       games, backgammon;
  9. SYSTEM:         MS-DOS;
  10. FILENAME:       BG.C;
  11. WARNINGS:       "The author claims the copyright to the MS-DOS version and
  12.                 authorizes non-commercial use only.";
  13. SEE-ALSO:       CUG102, BG.C, BGDISP.C;
  14. AUTHORS:        Michael Yokoyama;
  15. COMPILERS:      Microsoft v. 3.00;
  16. */
  17.  
  18. extern char c, level;
  19.  
  20. help()
  21. {
  22.   cls();
  23.   printf("This is a simulation of a backgammon game with no doubling cube.  The computer\n");
  24.   printf("will play white, you will play red.  In this game, the backgammon board has\n");
  25.   printf("numbers (from 1 to 24) to represent the different points (triangles) on the\n");
  26.   printf("standard board, plus letters and numbers to show how many pieces, and of which\n");
  27.   printf("color, are at each point.  The bar point is represented by the number 0.\n\n");
  28.   printf("White's Home                         (ME)\n\n");
  29.   printf("    1     2     3     4     5     6         7     8     9    10    11    12\n");
  30.   printf(" =============================================================================\n");
  31.   printf("    R                             W   ||          W                       R\n");
  32.   printf("    2                             5   ||          3                       5\n");
  33.   printf("                                      ||\n\n");
  34.   printf("                                      ||\n");
  35.   printf("                1     1           5   ||          3                       5\n");
  36.   printf("                W     W           R   ||          R                       W\n");
  37.   printf(" =============================================================================\n\n");
  38.   printf("   24    23    22    21    20    19        18    17    16    15    14    13\n\n");
  39.   printf("Red's Home                           (YOU)\n\n");
  40.   printf("Press any key to continue instructions:\n");
  41.   getch();
  42.   cls();
  43.   printf("PLAYING BACKGAMMON\n\n");
  44.   printf("When it is your turn, the computer will roll the dice for you, and you will\n");
  45.   printf("be asked to enter a move.  To move, type the numbers of the points (a number\n");
  46.   printf("from 0 to 24) where the pieces are to be moved.\n");
  47.   printf("\n");
  48.   printf("For example, if your roll was '5,3', and you want to advance a piece on\n");
  49.   printf("point 12 five points, and a piece on point 6 three points, you would\n");
  50.   printf("enter '12,16' as your move.\n\n");
  51.   printf("ORDERING THE DICE\n\n");
  52.   printf("To simplify the bookkeeping, it is assumed that you will take the move\n");
  53.   printf("corresponding to the higher number first.  Sometimes, however, that will make\n");
  54.   printf("it impossible to move off the bar, or make a move.\n\n");
  55.   printf("If you want to move in the opposite order (take the lower number first)\n");
  56.   printf("type a minus as the first character.\n\n");
  57.   printf("For example, in the above case where your roll was '5 3', and you wish to\n");
  58.   printf("advance a piece on point 12 THREE points, and the piece on point 6 FIVE\n");
  59.   printf("points, you would enter '-12 6'.\n\n");
  60.   printf("Press any key to continue instructions:\n");
  61.   getch();
  62.   cls();
  63.   printf("MULTIPLE MOVES\n\n");
  64.   printf("To move a single piece more than once, enter the point over where it will pass.\n");
  65.   printf("For example, if you had rolled '2 2' (double two's), and you want to move the\n");
  66.   printf("piece on point 14 four times, enter '14 16 18 20' as your move.\n\n");
  67.   printf("DOUBLES\n\n");
  68.   printf("Instead of entering two numbers, you get to enter four numbers.\n\n");
  69.   printf("SKIPPING MOVES\n\n");
  70.   printf("You may skip your turn by typing a 'new-line' all by itself.\n\n");
  71.   printf("THE BAR POINT\n\n");
  72.   printf("If your opponent hits your piece removes it to the bar, you must bring your\n");
  73.   printf("piece back into play before you make any other move.  In this game, the bar\n");
  74.   printf("is represented by point 0.\n\n");
  75.   printf("Press any key to continue instructions:\n");
  76.   getch();
  77.   cls();
  78.   printf("ILLEGAL MOVES\n\n");
  79.   printf("You cannot move to a point where your opponent has more than one piece;\n");
  80.   printf("take too many moves; or remove pieces from your inner board until all your\n");
  81.   printf("pieces are first there.\n\n");
  82.   printf("OTHER COMMANDS\n\n");
  83.   printf("    ? or h             Display this help screen\n");
  84.   printf("      b                Review the board\n");
  85.   printf("      q                Quit the current game\n\n");
  86.   printf("Press any key to get back to the game:\n");
  87.   getch();
  88.   cls();
  89. }
  90.  
  91. title()
  92. {
  93.   cls();
  94.   printf ("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n");
  95.   printf ("=-=-=-=-=-=-=-=-=-=-=-=-=   Welcome to BACKGAMMON!        =-=-=-=-=-=-=-=-=-=-=\n");
  96.   printf ("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n");
  97.  
  98.   printf ("              Backgammon written by Leor Zolman, February, 1982\n");
  99.   printf ("             PC/MS-DOS version by Michael Yokoyama, October, 1986\n");
  100.   printf ("        Source code provided by The C User's Group, McPherson, Kansas\n\n");
  101.  
  102.   printf ("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n");
  103. }
  104.  
  105. helpscrn()
  106. {
  107.   printf ("\nBackgammon commands:\n");
  108.   printf ("   ? or h           Display this help screen\n");
  109.   printf ("   [n][ n]          Move piece at number n (for normal roll)\n");
  110.   printf ("   [n][ n][ n][ n]  Move piece at number n (for doubles roll)\n");
  111.   printf ("   b                Draw the board\n");
  112.   printf ("   q                Quit the current game\n");
  113. }
  114.  
  115. select()
  116. {
  117.   printf ("\n\n\n\n\n\n\nChoose the game level:\n\n");
  118.   printf ("      N = Novice\n");
  119.   printf ("      I = Intermediate\n");
  120.   printf ("      E = Expert\n\n");
  121.   level = 'e';
  122.   if ((c = getche()) == 'n') {
  123.     level = 'b';
  124.     header();
  125.     printf ("\n\nNovice\n\n");
  126.   }
  127.   else if (c == 'i') {
  128.     header();
  129.     printf ("\n\nIntermediate\n\n");
  130.     level = 'i';
  131.   }
  132.   else {
  133.     header();
  134.     printf ("\n\nExpert\n\n");
  135.   }
  136. }
  137.  
  138. message0()
  139. {
  140.   switch(rand() % 5) {
  141.   case 4:
  142.   case 0:     
  143.   printf ("\n\n\nLet's see who gets to go first:\n\n");
  144.     break;
  145.   case 1:     
  146.     printf ("\n\n\nLet's roll for first turn:\n\n");
  147.     break;
  148.   case 2:     
  149.     printf ("\n\n\nRoll one die for the first turn:\n\n");
  150.     break;
  151.   case 3:     
  152.     printf ("\n\n\nOk, the higher die moves first:\n\n");
  153.     break;
  154.   }
  155. }
  156.  
  157. message1()
  158. {
  159.   switch(rand() % 5) {
  160.   case 4:
  161.   case 0:     
  162.     printf ("Maybe you'd better stick to Adventure games?\n");
  163.     break;
  164.   case 1:     
  165.     printf ("Not bad for an AI experiment, eh?\n");
  166.     break;
  167.   case 2:     
  168.     printf ("Hee hee hee.  Better luck next time. . .\n");
  169.     break;
  170.   case 3:     
  171.     printf ("Aren't you ashamed to have been beaten by a computer?\n");
  172.     break;
  173.   }
  174. }
  175.  
  176. message2()
  177. {
  178.   switch(rand() % 5) {
  179.   case 0:     
  180.     printf ("\nNext time I'll put lead in the dice . . . .\n");
  181.     break;
  182.   case 1:     
  183.     printf ("\nHohum . . . next time get Babbage to program me.\n");
  184.     break;
  185.   case 2: 
  186.     printf ("\nIf I lose too many times, I'll format your hard disk (joke).\n");
  187.     break;
  188.   case 3:     
  189.     printf ("\nMumble . . . those unlucky rolls will do it every time!\n");
  190.     break;
  191.   case 4:     
  192.     printf ("\nNot bad for a person who always gets the good rolls!\n");
  193.   }
  194. }
  195.  
  196.  
  197. message3()
  198. {
  199.   switch(rand() % 5) {
  200.   case 0:     
  201.     printf ("Enter your move:\n");
  202.     break;
  203.   case 1:     
  204.     printf ("Your move:\n");
  205.     break;
  206.   case 2: 
  207.     printf ("Move, please:\n");
  208.     break;
  209.   case 3:     
  210.     printf ("Your turn:\n");
  211.     break;
  212.   case 4:     
  213.     printf ("Move:\n");
  214.   }
  215. }
  216.  
  217. message4()
  218. {
  219.   printf ("\n");
  220.   switch(rand() % 5) {
  221.   case 0:     
  222.     printf ("Let's play another game, ok");
  223.     break;
  224.   case 1:     
  225.     printf ("Will you have another round");
  226.